home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / bsg.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  2KB  |  66 lines

  1. #ifndef BSG_H
  2. #define BSG_H
  3.  
  4. #include <linux/types.h>
  5.  
  6. #define BSG_PROTOCOL_SCSI        0
  7.  
  8. #define BSG_SUB_PROTOCOL_SCSI_CMD    0
  9. #define BSG_SUB_PROTOCOL_SCSI_TMF    1
  10. #define BSG_SUB_PROTOCOL_SCSI_TRANSPORT    2
  11.  
  12. /*
  13.  * For flags member below
  14.  * sg.h sg_io_hdr also has bits defined for it's flags member. However
  15.  * none of these bits are implemented/used by bsg. The bits below are
  16.  * allocated to not conflict with sg.h ones anyway.
  17.  */
  18. #define BSG_FLAG_Q_AT_TAIL 0x10 /* default, == 0 at this bit, is Q_AT_HEAD */
  19.  
  20. struct sg_io_v4 {
  21.     __s32 guard;        /* [i] 'Q' to differentiate from v3 */
  22.     __u32 protocol;        /* [i] 0 -> SCSI , .... */
  23.     __u32 subprotocol;    /* [i] 0 -> SCSI command, 1 -> SCSI task
  24.                    management function, .... */
  25.  
  26.     __u32 request_len;    /* [i] in bytes */
  27.     __u64 request;        /* [i], [*i] {SCSI: cdb} */
  28.     __u64 request_tag;    /* [i] {SCSI: task tag (only if flagged)} */
  29.     __u32 request_attr;    /* [i] {SCSI: task attribute} */
  30.     __u32 request_priority;    /* [i] {SCSI: task priority} */
  31.     __u32 request_extra;    /* [i] {spare, for padding} */
  32.     __u32 max_response_len;    /* [i] in bytes */
  33.     __u64 response;        /* [i], [*o] {SCSI: (auto)sense data} */
  34.  
  35.         /* "dout_": data out (to device); "din_": data in (from device) */
  36.     __u32 dout_iovec_count;    /* [i] 0 -> "flat" dout transfer else
  37.                    dout_xfer points to array of iovec */
  38.     __u32 dout_xfer_len;    /* [i] bytes to be transferred to device */
  39.     __u32 din_iovec_count;    /* [i] 0 -> "flat" din transfer */
  40.     __u32 din_xfer_len;    /* [i] bytes to be transferred from device */
  41.     __u64 dout_xferp;    /* [i], [*i] */
  42.     __u64 din_xferp;    /* [i], [*o] */
  43.  
  44.     __u32 timeout;        /* [i] units: millisecond */
  45.     __u32 flags;        /* [i] bit mask */
  46.     __u64 usr_ptr;        /* [i->o] unused internally */
  47.     __u32 spare_in;        /* [i] */
  48.  
  49.     __u32 driver_status;    /* [o] 0 -> ok */
  50.     __u32 transport_status;    /* [o] 0 -> ok */
  51.     __u32 device_status;    /* [o] {SCSI: command completion status} */
  52.     __u32 retry_delay;    /* [o] {SCSI: status auxiliary information} */
  53.     __u32 info;        /* [o] additional information */
  54.     __u32 duration;        /* [o] time to complete, in milliseconds */
  55.     __u32 response_len;    /* [o] bytes of response actually written */
  56.     __s32 din_resid;    /* [o] din_xfer_len - actual_din_xfer_len */
  57.     __s32 dout_resid;    /* [o] dout_xfer_len - actual_dout_xfer_len */
  58.     __u64 generated_tag;    /* [o] {SCSI: transport generated task tag} */
  59.     __u32 spare_out;    /* [o] */
  60.  
  61.     __u32 padding;
  62. };
  63.  
  64.  
  65. #endif
  66.